package ControlProfesores;

import ConectividadDatos.CargadorDatos;
import ConectividadDatos.EnlaceDB;
import ControlEscolar.DTOS.ProfesorDTO;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author AlanGR
 */
public class AgendProfesorDAO {

    EnlaceDB enlace;
    CargadorDatos cargador;

    public AgendProfesorDAO() {

        enlace = new EnlaceDB();
        cargador = new CargadorDatos();

    }

    /**
     * devuelve toda la agenda de la semana del profesor
     *
     * @param idProfesor
     * @return
     */
    public AgendaProfesorDTO agenda(int idProfesor) {
        AgendaProfesorDTO agenda = new AgendaProfesorDTO();

        enlace.openDatabase();

        // -- LUNES 
        String queryLunes = "SELECT * FROM actividades_profesor WHERE actividades_profesor.dia = 1 "
                + "AND actividades_profesor.id_profesor = " + idProfesor + " AND actividades_profesor.estado > 0";
        ResultSet rsLunes = enlace.executeQuery(queryLunes);
        Vector lunes = new Vector();
        try {
            while (rsLunes.next()) {
                ActividadProfesorDTO act = cargador.actividadesProfesorDTO(rsLunes);
                lunes.add(act);
            }
        } catch (SQLException ex) {
            Logger.getLogger(AgendProfesorDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        agenda.setLunes(lunes);

        // -- MARTES 
        String queryMartes = "SELECT * FROM actividades_profesor WHERE actividades_profesor.dia = 2 "
                + "AND actividades_profesor.id_profesor = " + idProfesor + " AND actividades_profesor.estado > 0";
        ResultSet rsMartes = enlace.executeQuery(queryMartes);
        Vector martes = new Vector();
        try {
            while (rsMartes.next()) {
                ActividadProfesorDTO act = cargador.actividadesProfesorDTO(rsMartes);
                martes.add(act);
            }
        } catch (SQLException ex) {
            Logger.getLogger(AgendProfesorDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        agenda.setMartes(martes);

        // -- MIERCOLES 
        String queryMiercoles = "SELECT * FROM actividades_profesor WHERE actividades_profesor.dia = 3 "
                + "AND actividades_profesor.id_profesor = " + idProfesor + " AND actividades_profesor.estado > 0";
        ResultSet rsMiercoles = enlace.executeQuery(queryMiercoles);
        Vector miercoles = new Vector();
        try {
            while (rsMiercoles.next()) {
                ActividadProfesorDTO act = cargador.actividadesProfesorDTO(rsMiercoles);
                miercoles.add(act);
            }
        } catch (SQLException ex) {
            Logger.getLogger(AgendProfesorDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        agenda.setMiercoles(miercoles);

        // --- JUEVES 
        String queryJueves = "SELECT * FROM actividades_profesor WHERE actividades_profesor.dia = 4 "
                + "AND actividades_profesor.id_profesor = " + idProfesor + " AND actividades_profesor.estado > 0";
        Vector jueves = new Vector();
        ResultSet rsJueves = enlace.executeQuery(queryJueves);
        try {
            while (rsJueves.next()) {
                ActividadProfesorDTO act = cargador.actividadesProfesorDTO(rsJueves);
                jueves.add(act);
            }
        } catch (SQLException ex) {
            Logger.getLogger(AgendProfesorDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        agenda.setJueves(jueves);

        // --- VIERNES 
        String queryViernes = "SELECT * FROM actividades_profesor WHERE actividades_profesor.dia = 5 "
                + "AND actividades_profesor.id_profesor = " + idProfesor + " AND actividades_profesor.estado > 0";
        ResultSet rsViernes = enlace.executeQuery(queryViernes);
        Vector viernes = new Vector();

        try {
            while (rsViernes.next()) {
                ActividadProfesorDTO act = cargador.actividadesProfesorDTO(rsViernes);
                viernes.add(act);
            }
        } catch (SQLException ex) {
            Logger.getLogger(AgendProfesorDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        agenda.setViernes(viernes);

        enlace.closeDatabase();
        return agenda;
    }

    public int existeHoraInicioEnDia(int dia, int horaInicio, int idprofesor) {

        int total = 0;
        String sql = new String();

        sql += " SELECT count(*) as total FROM actividades_profesor ";
        sql += "  WHERE";
        sql += " actividades_profesor.hora_inicio = " + horaInicio;
        sql += "  AND";
        sql += " actividades_profesor.dia = " + dia;
        sql += "  AND";
        sql += " actividades_profesor.estado > 0";
        sql += "  AND";
        sql += " actividades_profesor.id_profesor = " + idprofesor;

        enlace.openDatabase();
        ResultSet rs = enlace.executeQuery(sql);
        try {
            if (rs.next()) {
                total = rs.getInt("total");

            } else {
                total = 0;
            }
        } catch (SQLException ex) {
            Logger.getLogger(AgendProfesorDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        enlace.closeDatabase();
        return total;
    }

    /**
     * ALAN GONZALEZ NUEVO EVENTO
     *
     * @param act
     */
    public void nuevoEvento(ActividadProfesorDTO act) {

        String sql = new String();
        
         sql+="  INSERT INTO actividades_profesor SET";
         sql+="   actividades_profesor.dia = "+act.getDia();
         sql+=" , actividades_profesor.id_profesor = "+act.getIdProfesor();
         sql+=" , actividades_profesor.hora_inicio = "+act.getHoraInicio();
         sql+=" , actividades_profesor.hora_fin = "+act.getHoraFin();
         sql+=" , actividades_profesor.descripcion = '"+act.getDescripcion()+"'";
         sql+=" , actividades_profesor.estado = 1";
         
         enlace.openDatabase();
         enlace.execute(sql);
         enlace.closeDatabase();
    }
   
    
    /**
     * 
     * @param idProfesor
     * @return 
     */
    public ProfesorDTO profesorXID(int idProfesor){
    ProfesorDTO profesor = new ProfesorDTO();
    
    String query = "SELECT * FROM profesores WHERE profesores.id = "+idProfesor;
    
    enlace.openDatabase();
    ResultSet rs = enlace.executeQuery(query);
    
        try {
            if(rs.next()){
                 profesor = cargador.profesoresDTO(rs);
            }
        } catch (SQLException ex) {
            Logger.getLogger(AgendProfesorDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
    
        try {
            rs.close();
        } catch (SQLException ex) {
            Logger.getLogger(AgendProfesorDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
    enlace.closeDatabase();
    
    return  profesor;
    
    }
    
  

}
